﻿Imports System.ComponentModel

Public Class InUitKasForm

#Region "Properties"

    Private _myVerkoopRow As ArtikelsDataSet.VerkopenRow
#End Region

#Region "Constructors"

    Public Sub New(ByVal verkoopRij As ArtikelsDataSet.VerkopenRow, ByVal naarBankBedrag As Decimal, ByVal isTussendoor As Boolean)
        InitializeComponent()
        _myVerkoopRow = verkoopRij
        Me.VerkopenBindingSource.DataSource = Utility.Data
        Me.VerkopenBindingSource.Position = Utility.Data.Verkopen.Rows.IndexOf(verkoopRij)
        If (_myVerkoopRow.NaarBankBedrag <> naarBankBedrag) Then
            _myVerkoopRow.NaarBankBedrag = naarBankBedrag
        End If
        ' Bij tussendoor wordt hier een bedrag meegegeven.
        ' Zorg ervoor dat de gebruiker dat niet kan veranderen.
        tbNaarDeBankBedrag.ReadOnly = isTussendoor
    End Sub

#End Region

#Region "Events"

    Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs)
        MyBase.OnKeyUp(e)
        Select Case e.KeyCode
            Case Keys.F2
                btnOK_Click(Me, EventArgs.Empty)
        End Select
    End Sub

    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        Try
            If (Not Me.ValidateChildren()) Then
                Me.DialogResult = DialogResult.None
                Return
            Else
                Me.VerkopenBindingSource.EndEdit()
                Me.DialogResult = DialogResult.OK
                Me.Close()
            End If
        Catch ex As Exception
            log.WriteError(ex.ToString())
            MsgBox.ShowError("Er ging iets mis bij het bewaren. Schrijf de gegevens op in het logboek en ga verder met het programma.")
        End Try
    End Sub

    Protected Overrides Sub OnClosing(ByVal e As CancelEventArgs)
        MyBase.OnClosing(e)
        If (Me.DialogResult = DialogResult.Cancel) Then
            _myVerkoopRow.RejectChanges()
        End If
    End Sub

    Private Sub tbNaarDeBankNaam_GotFocus(ByVal sender As Object, ByVal e As EventArgs) Handles tbNaarDeBankNaam.GotFocus
        If (tbNaarDeBankNaam.Text = String.Empty) Then
            tbNaarDeBankNaam.Text = Security.HuidigeWinkelierNaam
            Me.tbNaarDeBankNaam.BackColor = Constants.Kleuren.NEUTRAAL
        End If
    End Sub

    Private Sub tbNaarDeBankBedrag_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles tbNaarDeBankBedrag.Validating
        Me.tbNaarDeBankBedrag.BackColor = Constants.Kleuren.NEUTRAAL
        Dim bedrag As Decimal
        If (Not Decimal.TryParse(tbNaarDeBankBedrag.Text, bedrag)) Then
            e.Cancel = True
            Me.ErrorProvider1.SetError(tbNaarDeBankBedrag, "Geen geldig bedrag")
            Me.tbNaarDeBankBedrag.BackColor = Constants.Kleuren.ONGELDIG
        ElseIf (bedrag < 0) Then
            e.Cancel = True
            Me.ErrorProvider1.SetError(tbNaarDeBankBedrag, "Het bedrag 'Naar bank' mag niet negatief zijn")
            Me.tbNaarDeBankBedrag.BackColor = Constants.Kleuren.ONGELDIG
        End If
    End Sub

    Private Sub tbNaarDeBankNaam_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles tbNaarDeBankNaam.Validating
        Me.tbNaarDeBankNaam.BackColor = Constants.Kleuren.NEUTRAAL
        If (_myVerkoopRow.NaarBankBedrag <> 0D AndAlso tbNaarDeBankNaam.Text.Length = 0) Then
            e.Cancel = True
            Me.ErrorProvider1.SetError(tbNaarDeBankNaam, "Naam voor 'naar de bank' is verplicht als je een bedrag ingeeft")
            Me.tbNaarDeBankNaam.BackColor = Constants.Kleuren.ONGELDIG
        End If
    End Sub

    Private Sub tbRefNummer_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles tbRefNummer.Validating
        Me.tbRefNummer.BackColor = Constants.Kleuren.NEUTRAAL
        If (_myVerkoopRow.NaarBankBedrag <> 0D AndAlso tbRefNummer.Text = String.Empty) Then
            e.Cancel = True
            Me.ErrorProvider1.SetError(tbRefNummer, "Referentienummer voor 'naar de bank' is verplicht als je een bedrag ingeeft")
            tbRefNummer.BackColor = Constants.Kleuren.ONGELDIG
        End If
    End Sub

    Private Sub tbInUitKasReden_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles tbInUitKasReden.Validating
        Me.tbInUitKasReden.BackColor = Constants.Kleuren.NEUTRAAL
        If (_myVerkoopRow.InUitKasBedrag <> 0D AndAlso tbInUitKasReden.Text.Length = 0) Then
            e.Cancel = True
            Me.ErrorProvider1.SetError(tbInUitKasReden, "Reden voor in/uit is verplicht als je een bedrag ingeeft")
            Me.tbInUitKasReden.BackColor = Constants.Kleuren.ONGELDIG
        End If
    End Sub

#End Region

End Class